package Controleur;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import Modele.Client;
import Modele.Station;
import Vue.LouerVelo;

/** Définit l'écouteur des combobox de la location */
public class LouerVeloComboListener implements ActionListener {

	/** La vue de location */
	private LouerVelo louervelo;

	/**
	 * Instancie l'écouteur
	 * 
	 * @param p_louervelo
	 *            La vue de location
	 */
	public LouerVeloComboListener(LouerVelo p_louervelo) {
		this.louervelo = p_louervelo;
	}

	/**
	 * Action lors de l'évenement
	 * 
	 * @param arg0
	 *            Objet de l'évenement
	 */
	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		locationValide();
	}

	/** Vérifie que les champs de la frame sont valides */
	public void locationValide() {
		if (louervelo.getComboBoxClient().getSelectedIndex() == -1
				|| louervelo.getComboBoxStation().getSelectedIndex() == -1) {
			// Si un des deux est nul : Desativation du bouton et divers labels.
			louervelo.getBtnValider().setEnabled(false);
			louervelo.getLblClientLoueAct().setVisible(false);
			louervelo.getLblLaStationEst().setVisible(false);
		} else {
			louervelo.getBtnValider().setEnabled(true);
			louervelo.getLblClientLoueAct().setVisible(false);
			louervelo.getLblLaStationEst().setVisible(false);

			Client selectedClient = (Client) louervelo.getComboBoxClient()
					.getSelectedItem();
			Station selectedStation = (Station) louervelo.getComboBoxStation()
					.getSelectedItem();

			// Si aucun n'est nul :
			// SI il loue un vélo;
			if (selectedClient.getVeloActuel() != null) {
				// Si le client loue un vélo actuellement, activation du label,
				// et desactivation du bouton valider
				louervelo.getBtnValider().setEnabled(false);
				louervelo.getLblClientLoueAct().setVisible(true);
			} else {
				// Sinon, désactivation label
				louervelo.getLblClientLoueAct().setVisible(false);

				// Puis si la station est vide
				if (selectedStation.getStationnementsActuels().size() == 0) {
					// On affiche le label, et désactive le bouton
					louervelo.getLblLaStationEst().setVisible(true);
					louervelo.getBtnValider().setEnabled(false);
				} else {
					// sinon on active le bouton et desactive le label
					louervelo.getBtnValider().setEnabled(true);
					louervelo.getLblLaStationEst().setVisible(false);
				}
			}

		}

	}

}
